<?php

namespace App\Http\Controllers\Test;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class TestController extends Controller
{


    //图片防盗链测试
    public function getImage(Request  $request)
    {
        $domain = $request->getSchemeAndHttpHost();//获取当前请求 http://localhost:8500
        $referer = $request->headers->get('referer');
        if($referer){
            $allowed_domains = array('localhost:8500', 'localhost:8500');
            $allowed_referer = false;

            foreach ($allowed_domains as $domain) {
                if (strpos($referer, $domain) != false) {
                    $allowed_referer = true;
                    break;
                }
            }
        }else{
            $allowed_referer = true;
        }

        if (!$allowed_referer) {
            abort(403, 'Forbidden-拒绝访问');
        }

        //通过图片id，查询数据库获取图片地址
        $imag = "https://www.xiaocai.ink/uploads/tinymce/images/067b09470683b4d5cf9331f4c36c6ce063579a5cb87a1.jpg";
//        $imag = "http://upload.xiaocai.ink/FnhVxLgGN_8SP2zUoKvgIT--6MYU";
//        $imag = public_path('/logo.png');

//        $image_path = $imag;
//        $image_type = pathinfo($image_path, PATHINFO_EXTENSION);
//        header('Content-Type: image/' . $image_type);
//        readfile($image_path);

        // 原始图片路径
//        $srcImage = $imag;
//        // 字体文件路径
//        $fontFile = public_path('/fonts/qs.ttf');
//        // 创建图像资源
//        $image = imagecreatefromjpeg($srcImage);
//        // 设置字体颜色
//        $color = imagecolorallocatealpha($image, 255, 255, 255,10);
//        // 设置字体大小和旋转角度
//        $fontSize = 25;
//        $angle = 0;
//        $text = '开心相册';
//        // 获取原始图片尺寸
//        $imageWidth = imagesx($image);
//        $imageHeight = imagesy($image);
//        // 计算水印文本宽度和高度
//        $bbox = imagettfbbox($fontSize, 0, $fontFile, $text);
//        $textWidth = $bbox[2] - $bbox[0];
//        $textHeight = $bbox[1] - $bbox[7];
//        // 计算水印位置
//        $marginX = 100; // 水平边距
//        $marginY = 10; // 垂直边距
//        $posX = $imageWidth - $textWidth - $marginX;
//        $posY = $imageHeight - $textHeight - $marginY;
//        // 添加文字水印
//        imagettftext($image, $fontSize, $angle, $posX, $posY, $color, $fontFile, $text);
//        // 输出图片
//        header('Content-Type: image/jpeg');
//        imagejpeg($image);
//        // 释放资源
//        imagedestroy($image);



        // 读取原始图片
//        $srcImage = imagecreatefromjpeg($imag);
//
//        // 读取水印图片
//        $watermarkImage = imagecreatefrompng(public_path('/logo.png'));
//
//        // 计算水印位置（这里将水印添加到图片的右下角）
//        $posX = imagesx($srcImage) - 120; // 水平边距为 120px
//        $posY = imagesy($srcImage) - 80; // 垂直边距为 80px
//
//        // 缩放水印图片
//        $watermarkImageResized = imagecreatetruecolor(120, 80);
//        imagecopyresampled($watermarkImageResized, $watermarkImage, 0, 0, 0, 0, 120, 80,
//            imagesx($watermarkImage), imagesy($watermarkImage));
//
//        // 合并缩放后的水印图片和原始图片
//        imagecopy($srcImage, $watermarkImageResized, $posX, $posY, 0, 0, 120, 80);
//
//        // 输出修改后的图片（这里输出为 JPEG 格式）
//        header('Content-Type: image/jpeg');
//        imagejpeg($srcImage);
//
//        // 释放内存
//        imagedestroy($watermarkImageResized);
//        imagedestroy($watermarkImage);
//        imagedestroy($srcImage);


        // 读取原始图片
        $srcImage = imagecreatefromjpeg($imag);

        // 读取水印图片
        $watermarkImage = imagecreatefrompng(public_path('/logo.png'));

        // 设置水印的目标宽度和高度
//        $targetWidth = 40; // 设置目标宽度为 200 像素
//        $targetHeight = 40; // 设置目标高度为 100 像素
        $targetWidth = imagesx($srcImage); // 设置目标宽度为 200 像素
        $targetHeight = imagesy($srcImage); // 设置目标高度为 100 像素

        // 调整水印图片的大小
        $resizedWatermarkImage = imagescale($watermarkImage, $targetWidth, $targetHeight);

        // 设置水印透明度（0-100，0 表示完全透明，100 表示完全不透明）
        $opacity = 8; // 设置透明度为 50%

        // 计算水印位置（这里将水印添加到图片的右下角）
//        $posX = imagesx($srcImage) - imagesx($resizedWatermarkImage) - 10; // 水平边距为 10px
//        $posY = imagesy($srcImage) - imagesy($resizedWatermarkImage) - 10; // 垂直边距为 10px

        $posX = imagesx($srcImage) - imagesx($resizedWatermarkImage) ; // 水平边距为 10px
        $posY = imagesy($srcImage) - imagesy($resizedWatermarkImage) ; // 垂直边距为 10px

        // 合并水印图片和原始图片，并设置透明度
        imagecopymerge($srcImage, $resizedWatermarkImage, $posX, $posY, 0, 0, imagesx($resizedWatermarkImage), imagesy($resizedWatermarkImage), $opacity);

        // 输出修改后的图片（这里输出为 JPEG 格式）
        header('Content-Type: image/jpeg');
        imagejpeg($srcImage);
        // 释放内存
        imagedestroy($watermarkImage);
        imagedestroy($srcImage);



    }

}
